// 菜单注册
import { IDomEditor, IToolbarConfig, Boot, IModuleConf } from '@wangeditor/editor';
// 图标引入
import { JUSTIFY_LEFT_SVG, MORE_SVG, BULLETED_LIST_SVG } from '../module/icon-svg';

import mentionModule from '../module/mention';
import linkCardModel from '../module/converToLinkCard';
import customLinkModel from '../module/customLink';
// 上传文档
import UploadDocxModule from '../module/uploadDocx';
import HistoryModule from '../module/draftHistory';
// 改写分割线
import insertDividerMenu from '../module/divider';

const registerMenu = function (editor: IDomEditor, toolbarConfig: Partial<IToolbarConfig>, articleType: string) {
  // 动态生成菜单
  let toolbarKeys = [
    'undo', // 撤销
    'redo', // 重做
    'headerSelect',
    // 'bold', // 加粗
    // 'underline', // 下划线
    // 'italic', // 斜体
    {
      key: 'group-font-style', // 必填，要以 group 开头
      title: '对齐方式', // 必填
      iconSvg: MORE_SVG, // 可选
      menuKeys: ['bold', 'underline', 'italic', 'through', 'sup', 'sub'], // 下级菜单 key
    },
    'fontSize', // 字号
    'color', // 颜色
    'bgColor', // 背景颜色
    {
      key: 'group-justify', // 必填，要以 group 开头
      title: '对齐方式', // 必填
      iconSvg: JUSTIFY_LEFT_SVG, // 可选
      menuKeys: ['justifyLeft', 'justifyRight', 'justifyCenter'], // 下级菜单 key
    },
    {
      key: 'group-justify', // 必填，要以 group 开头
      title: '列表', // 必填
      iconSvg: BULLETED_LIST_SVG, // 可选
      menuKeys: ['bulletedList', 'numberedList'], // 下级菜单 key
    },

    // 'justifyLeft', // 左对齐
    // 'justifyRight', // 右对齐
    // 'justifyCenter', // 居中
    // 'justifyJustify', // 两端对齐
    'blockquote', // 引用
    articleType === 'order' ? null : 'uploadImage', // 上传图片
    // 'divider', // 分割线
    'insertDivider', // 改写的分割线
    // 'insertLink' // 插入链接
  ].filter(Boolean);

  const allRegisterMenu = editor.getAllMenuKeys(); // 获取所有已注册的菜单
  // console.log('注册的全部菜单：', allRegisterMenu);
  // 注册菜单
  if (allRegisterMenu.indexOf('insertArticleLink') < 0) {
    // 如果未注册，则注册
    Boot.registerModule(mentionModule);
    Boot.registerModule(linkCardModel);
    Boot.registerModule(customLinkModel);
    Boot.registerModule(insertDividerMenu);
    Boot.registerModule(UploadDocxModule);
    Boot.registerModule(HistoryModule);
  }

  // 根据 articleType 动态设置 insertKeys
  const commonKeys = ['insertArticleLink', 'uploadDocx'];
  const additionalKeys = ['insertTopic', 'insertAt'];
  const insertKeys = [...commonKeys, ...additionalKeys, 'history'];
  const toolbarKeysLength = toolbarKeys.length;
  console.log('toolbarKeysLength', toolbarKeysLength);
  toolbarConfig.insertKeys = {
    index: toolbarKeysLength,
    keys: insertKeys,
  };
  toolbarConfig.toolbarKeys = toolbarKeys;
};

export default registerMenu;
